<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Usuario extends CI_Controller {

    /**
     * Index Page for this controller.
     *
     * Maps to the following URL
     * 		http://example.com/index.php/welcome
     * 	- or -  
     * 		http://example.com/index.php/welcome/index
     * 	- or -
     * Since this controller is set as the default controller in 
     * config/routes.php, it's displayed at http://example.com/
     *
     * So any other public methods not prefixed with an underscore will
     * map to /index.php/welcome/<method_name>
     * @see http://codeigniter.com/user_guide/general/urls.html
     */
    function __construct() {
        parent::__construct();
        $this->load->model('Model_usuario', '', TRUE);
    }

    public function index() {
        $session = $this->session->userdata('co_usuario');
        if ($session) {
            redirect('/home/', 'refresh');
        } else {
            $this->login();
        }
    }

    public function perfil() {
        $tp_perfil = $this->session->userdata('co_tipo_usuario');
        if ($tp_perfil === '2') {
            $arquivosJS = ['jquery', 'jquery-ui', 'main_crd', 'resample', 'fancybox', 'profile-pic', 'cropit.min', 'perfil'];
            $vwPerfil = 'crd';
        } else {
            $arquivosJS = ['jquery', 'jquery-ui', 'main', 'resample', 'fancybox', 'profile-pic', 'cropit.min', 'perfil'];
            $vwPerfil = 'aluno';
        }
        $arquivosCSS = ['main', 'timeline', 'fancybox', 'perfilUsuario', 'forms'];
        $params = ["arquivosJS" => $arquivosJS,
            "arquivosCSS" => $arquivosCSS,
            "titulo" => "SONIC - Meu perfil",
            "m_ativo" => "none"];
        $this->load->view('header', $params);
        $this->load->view($vwPerfil . '/menu_lateral');
        $this->load->view($vwPerfil . '/perfil');
        $this->load->view('footer');
    }

    public function chosepic() {
        $this->load->view('aluno/ajax/chosepic');
    }

    public function uploadpic() {
        $userPhoto = $this->session->userdata('ft_usuario');
        $usuario = $this->session->userdata('co_usuario');
        $imgName = ($userPhoto === 'no-photo.png') ? 'userpic-' . $usuario . '.jpg' : $userPhoto;
        $this->Model_usuario->set_ft_usuario($imgName, $usuario);
        $this->session->set_userdata('ft_usuario', $imgName);
        $param = ['imgdata' => $this->input->post('data'), 'imgname' => $imgName];
        $this->load->view('aluno/ajax/uploadpic', $param);
    }

    public function colegaDetail() {
        ajax_only();
        $this->load->model('Model_usuario');
        $colegaId = $this->input->get('id');
        if (empty($colegaId)) {
            echo 'Erro ao buscar o aluno';
            exit;
        }
        $colegaData = $this->Model_usuario->getInfoUser($colegaId);
        if ($colegaData) {
            $nCompleto = explode(" ", $colegaData['NO_PESSOA']);
            $nomeColega = $nCompleto[0] . ' ' . end($nCompleto);
            $inicioCurso = $colegaData['ano'] . '/' . $colegaData['sem'];
            $params = ['nome' => $nomeColega, 'foto' => $colegaData['FT_FOTO_USUARIO'], 'inicioCurso' => $inicioCurso,
                'facebook' => $colegaData['DS_FACEBOOK'], 'twitter' => $colegaData['DS_TWITTER'],
                'linkedin' => $colegaData['DS_LINKEDIN'], 'instagram' => $colegaData['DS_INSTAGRAM'],];
            $this->load->view('aluno/ajax/hovercard', $params);
        } else {
            echo 'Usuário não encontrado na base de dados!';
        }
    }

    public function login() {
        $userdata = $this->input->post();
        if (!empty($userdata)) {
            $this->load->library('form_validation');
            $this->form_validation->set_rules('login', 'login', 'trim|required|xss_clean');
            $this->form_validation->set_rules('senha', 'senha', 'trim|required|xss_clean|callback_check_db');
            if ($this->form_validation->run() === FALSE) {
                $this->load->view('login', array('lname' => $this->input->post('login')));
            } else {
                $rtnGet = $this->input->get('rtn');
                $rdr = (empty($rtnGet)) ? 'home' : $this->input->get('rtn');
                redirect($rdr, 'refresh');
            }
        } else {
            $this->load->view('login', array('lname' => ''));
        }
    }

    public function check_db($senha) {
        $user = $this->input->post('login');
        $result = $this->Model_usuario->login($user, $senha);
        if ($result) {
            $this->session->set_userdata($result[0]);
            return true;
        } else {
            $this->form_validation->set_message('check_db', 'O usuário e senha preenchidos estão incorretos');
            return false;
        }
    }

    public function logout() {
        $this->session->sess_destroy();
        redirect('/', 'refresh');
    }

    public function recuperarSenha() {
        $userMail = $this->input->get('email');
        if (empty($userMail)) {
            $this->load->view('recuperar_senha');
        } else {
            $verificaMail = $this->Model_usuario->getMailInfo($userMail);
            if ($verificaMail) {
                $this->load->helper('myemail');
                $mailVars = ['nome' => $verificaMail['nome'], 'link' => $this->getUrlToken($verificaMail)];
                $msgBody = mailTmpl($mailVars, 'recSenha');
                $dataReturn = msgemail('Recuperação de senha', $msgBody, $userMail);
                $retorno = ($dataReturn["send"]) ?
                        ['msg' => 'Enviamos um email para você com as instruções de recuperação de senha!', 'sts' => TRUE] :
                        ['msg' => 'Não foi possível enviar um email para ' . $userMail . '. Tente novamente mais tarde.', 'sts' => FALSE];
            } else {
                $retorno = ['msg' => 'Este endereço de e-mail não foi encontrado em nossa base de dados!', 'sts' => FALSE];
            }
            echo json_encode($retorno);
        }
    }

    public function resetpwd() {
        $user = $this->input->get('id');
        $token = $this->input->get('token');
        if (empty($user) || empty($token)) {
            show_error('As credenciais utiizadas para resetar a sua senha s&atilde;o inv&aacute;lidas.');
        } else {
            date_default_timezone_set('America/Sao_Paulo');
            $VLDtoken = md5($user . date('dmY'));
            if ($VLDtoken === $token) {
                $post = $this->input->post();
                if (empty($post['senha'])) {
                    $this->load->view('resetpwd');
                } else {
                    $result = $this->Model_usuario->resetPwd($user, $post['senha']);
                    $rest = ($result) ? ['r' => 'Sua senha foi alterada com sucesso'] : ['r' => 'Ocorreu um erro ao alterar sua senha. Tente novamente'];
                    $this->load->view('resetpwd_success', $rest);
                }
            } else {
                show_error('O per&iacute;odo para recupera&ccedil;&atilde;o de senha expirou ou seu token &eacute; inválido.');
            }
        }
    }

    private function getUrlToken($userData) {
        date_default_timezone_set('America/Sao_Paulo');
        $token = md5($userData['id'] . date('dmY'));
        $base = base_url();
        return $base . 'usuario/resetpwd?id=' . $userData['id'] .
                '&token=' . $token;
    }

    public function uploadbatch() {
        $this->load->helper('uac');
        get_acesso(2);
        $arquivosJS = array('jquery', 'main_crd');
        $arquivosCSS = array('main');
        $params = array("arquivosJS" => $arquivosJS,
            "arquivosCSS" => $arquivosCSS,
            "titulo" => "SONIC :: Importação de alunos em lote");
        $this->load->view('header', $params);
        $this->load->view('crd/menu_lateral');
        $this->load->view('crd/uploadbatch', array('error' => ' '));
        $this->load->view('footer');
    }

    public function loadbatch() {
        $this->load->helper('loadbatch');
//        $config['upload_path'] = './public_html/upload/';
//        $config['allowed_types'] = 'csv';
//        $this->load->library('upload', $config);
        //if (!$this->upload->do_upload()) {
        if (1 === 2) {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('uploadbatch', $error);
        } else {
//            $data = array('upload_data' => $this->upload->data());
//            $arquivo = $data['upload_data'];
            $arquivo = ['file_name' => 'alunos_20142.csv'];
            $file = "./public_html/upload/" . $arquivo['file_name'];
            $ls_alunos = csv_to_array($file, 'aluno_');
            $erros = [];
            foreach ($ls_alunos as $aluno) {
                if (!is_numeric($aluno['NU_MATRICULA'])) {
                    array_push($erros, 'A matricula ' . $aluno['NU_MATRICULA'] . ' possui caracteres inválidos');
                }
            }

            if (!count($erros)) {
                var_dump($ls_alunos);
            } else {
                echo 'Foram encontrados erros no arquivo enviado:<br/>';
                echo implode('<br />', $erros);
            }
        }
    }

}

/* End of file welcome.php */
/* Location: ./application/controllers/usuario.php */